package jp.co.cos.ittrick.channel.util;

import javax.servlet.http.HttpServletRequest;

public class Utility {

    /**
     * HTML エスケープ
     * @param input
     * @return
     */
    public String htmlEscape(String input) {
        input = substitute(input, "&",  "&amp;");
        input = substitute(input, "<",  "&lt;");
        input = substitute(input, ">",  "&gt;");
        //        input = substitute(input, "\"", "&quot;");
        return input;
    }

    /**
     * HTML アンエスケープ
     * @param input
     * @return
     */
    public String htmlUnescape(String input) {
        input = substitute(input, "&amp;", "&");
        input = substitute(input,  "&lt;", "<");
        input = substitute(input,  "&gt;", ">");
        return input;

    }


    /**
     * 文字列の置換を行う
     *
     * @param input 処理の対象の文字列
     * @param pattern 置換前の文字列
     * @oaram replacement 置換後の文字列
     * @return 置換処理後の文字列
     */
    static private String substitute(String input, String pattern, String replacement) {
        // 置換対象文字列が存在する場所を取得
        int index = input.indexOf(pattern);

        // 置換対象文字列が存在しなければ終了
        if(index == -1) {
            return input;
        }

        // 処理を行うための StringBuffer
        StringBuffer buffer = new StringBuffer();

        buffer.append(input.substring(0, index) + replacement);

        if(index + pattern.length() < input.length()) {
            // 残りの文字列を再帰的に置換
            String rest = input.substring(index + pattern.length(), input.length());
            buffer.append(substitute(rest, pattern, replacement));
        }
        return buffer.toString();
    }



    public static boolean isSmartPhone(HttpServletRequest request) {

        String userAgent = request.getHeader("User-Agent").toLowerCase();

        if(userAgent != null && (userAgent.indexOf("iphone") > 0 || userAgent.indexOf("android") > 0)) {
            return true;
        }

        return false;
    }

}
